import arrow  # pip install arrow

a = arrow.now()  # <Arrow [2023-10-11T21:16:06.187508+08:00]>
a.utcnow()  # <Arrow [2023-10-11T13:18:22.053743+00:00]> 获取世界标准时间
arrow.now('Asia/Shanghai')  # 获取指定时区的时间  <Arrow [2023-10-11T21:20:55.601579+08:00]>
b = arrow.get(2018, 2, 24)  # 直接创建个 arrow对象
b = arrow.Arrow(2018, 2, 24)  # 直接创建个 arrow对象

a.date()  # datetime.date(2023, 10, 11)
a.time()  # datetime.time(21, 16, 6, 187508)

# arrow对象 to 字符串 格式化
a.format('YYYYMMDD HH:mm:ss')  # '20231011 21:16:06'
# 将字符串装为 arrow对象
arrow.get('2018-02-24T13:00:00.000-07:00')  # 标准格式可以直接转化
arrow.get('2018-02-24 12:30:45', 'YYYY-MM-DD HH:mm:ss')  # <Arrow [2018-02-24T12:30:45+00:00]>
arrow.get('Joe  was born in May 1980', 'MMMM YYYY')  # 从字符串中通过格式参数搜索时间 <Arrow [1980-05-01T00:00:00+00:00]>

# arrow对象 to 时间戳
a.int_timestamp  # 1697030166 十位
a.timestamp()  # 1697030166.187508
a.float_timestamp  # 1697030166.187508  13位
int(a.timestamp()*1000)  # 1697030166187  13位

# 将时间戳转化为arrow对象  arrow.get(timestamp)
arrow.get(1697030166)     # <Arrow [2023-10-11T13:16:06+00:00]>
arrow.get(1697030166187)  # <Arrow [2023-10-11T13:16:06.187000+00:00]>
arrow.get(1697030166).to('local')  # <Arrow [2023-10-11T21:16:06+08:00]> 本地时间

# arrow对象 to datetime
a.datetime  # datetime.datetime(2023, 10, 11, 21, 16, 6, 187508, tzinfo=tzlocal())
a.year 
a.month
a.day
a.hour
a.minute  # 当前多少分钟
a.second  # 当前多少秒

# arrow对象 改对应时区时间
a.to('US/Pacific')  # <Arrow [2023-10-11T06:16:06.187508-07:00]>

# 时间推移a.shift(**kwargs)
a.shift(weeks=+3, days=-1)   # 三周后的前一天
a.shift(weekday=6)  # 距离最近a的星期日，weekday从0到6

# 时间替换a.replace(**kwargs)
a.replace(hour=9)  # <Arrow [2023-10-11T09:16:06.187508+08:00]>

# 时间范围和区间
a.span('hour')  # (<Arrow [2023-10-11T21:00:00+08:00]>, <Arrow [2023-10-11T21:59:59.999999+08:00]>)
a.floor('month')  # <Arrow [2023-10-01T00:00:00+08:00]> 当月的第一天
a.ceil('month')  # 当月的最后一天
# arrow.Arrow.span_range('month', a, b)
# arrow.Arrow.range()

# 格式化
a.format()  # '2023-10-11 21:16:06+08:00'
a.format('YYYY-MM-DD HH:mm:ss ZZ')  # '2023-10-11 21:16:06 +08:00'
a.ctime()  # 返回日期和时间的ctime格式化表示 'Wed Oct 11 21:16:06 2023'
a.weekday()  # 以整数形式返回星期几（0-6）
a.isoweekday()  # 以整数形式返回一周中的ISO日（1-7）
a.isocalendar()  # 返回3元组（ISO年，ISO周数，ISO周工作日） datetime.IsoCalendarDate(year=2023, week=41, weekday=3)
a.toordinal()  # 返回日期的格雷戈里序数 738804
# 人性化输出 
a.humanize()  # 'an hour ago'
